BMP280 Pressure Sensor on Adafruit breakout board

Bosch's I²C & SPI Precision Barometric Pressure & Temperature Sensor



Some quick specs

  • Pressure range 300 - 1100 hPa
  • Temperature range -40 - 85°C
  • Measuring barometric pressure with ±1 hPa absolute accuraccy
  • Measuring temperature with ±1.0°C accuracy
  • Because pressure changes with altitude, and the pressure measurements are so good, you can also use it as an altimeter with ±1 meter accuracy
  • low altitude noise of 0.25m
  • Can be use either I²C or SPI
  • Power can be between 3 - 5V, because of the onboard 3.3V regulator and level shifters
  • Current consumption 2.7µA @ 1Hz sampling rate


Breakout board pinout

Power pins
  • Vin - this is the power pin. Since the sensor chip uses 3 VDC, we have included a voltage regulator on board that will take 3-5VDC and safely convert it down. To power the board, give it the same power as the logic level of your microcontroller - e.g. for a 5V micro like Arduino, use 5V
  • 3Vo - this is the 3.3V output from the voltage regulator, you can grab up to 100mA from this if you like
  • GND - common ground for power and logic

All pins going into the breakout have level shifting circuitry to make them 3-5V logic level safe. Use whatever logic level is on Vin!

I²C Logic pins

  • SCK - this is also the I2C clock pin, connect to your microcontrollers I2C clock line
  • SDI - this is also the I2C data pin, connect to your microcontrollers I2C data line
Leave the other pins disconnected

SPI Logic pins

  • SCK - This is the SPI Clock pin, its an input to the chip
  • SDO - this is the Serial Data Out / Master In Slave Out pin, for data sent from the BMP280 to your processor
  • SDI - this is the Serial Data In / Master Out Slave In pin, for data sent from your processor to the BMP280
  • CS - this is the Chip Select pin, drop it low to start an SPI transaction. Its an input to the chip
If you want to connect multiple BMP280's to one microcontroller, have them share the SDI, SDO and SCK pins. Then assign each one a unique CS pin.


I²C Addressing

The BMP280 has two I2C addresses 0x76 and 0x77.
0x77 is default, the SDO is connected, on the pcb, with a pullup resistor to the Vcc.
0x76 is the alternative and will be achieved by connecting the SDO pin to ground.
BTW 0x76 is the default address for the BMP280 chip, but Adafruit has changed this on their board.


Python

External addresses to Adafruit:
Python & CircuitPython
Python Docs (Adafruit MCP9808 Python Library)


Schematic